iT邦幫忙

2022 iThome 鐵人賽

DAY 22
0

架構

前面做了一堆前置作業,這邊先看一下目前的架構如下

crypto_app是之前startapp生出來的應用程式

CryptoBot則是我們的主程式

Line developer 設定

接著要把這邊ngrok建立出的網址複製貼到Line developer 的webhook

按下Verify就可以看到sucess那就沒問題了

主程式

setting.py

只要到setting這邊把下面這幾個地方修改一下就可以了

如果忘記這邊要放什麼請到Day20看一下

LINE_CHANNEL_ACCESS_TOKEN = '請放你的token'
LINE_CHANNEL_SECRET = '請放你的secret'
LANGUAGE_CODE = 'zh-hant'

TIME_ZONE = 'Asia/Taipei'

這邊的大小寫可能要稍微注意一下!!!

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'crypto_app.apps.CryptoAppConfig'
]
DEBUG = True

ALLOWED_HOSTS = ['*']

ALLOWED_HOSTS若是有固定的Host或使用ngrok等進行demo測試時,再做更改就可以了

usrls.py

在url.py檔案中,設定的是當外部連接進入網站時,因為前面我們用ngrok 是用port 8000開的,所以預設的是當進入127.0.0.1:8000/admin的時候會進入Django內建後台的設定,我們等等還要去建立superuser。

from django.contrib import admin
from django.urls import path
from crypto_app import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('callback', views.callback)
]

應用程式

views.py

這邊我們可以先用這段程式來測試看我們是否有建立成功,這邊寫的功能是當使用者輸入訊息時會觸發,機器人會自動回應使用者輸入的訊息。

from django.shortcuts import render
from django.http import HttpResponse, HttpResponseBadRequest, HttpResponseForbidden
from django.views.decorators.csrf import csrf_exempt
# from django.conf import settings
from CryptoBot import settings 
from linebot import LineBotApi, WebhookParser
from linebot.exceptions import InvalidSignatureError, LineBotApiError
from linebot.models import MessageEvent, TextSendMessage

line_bot_api = LineBotApi(settings.LINE_CHANNEL_ACCESS_TOKEN)
parser = WebhookParser(settings.LINE_CHANNEL_SECRET)


@csrf_exempt
def callback(request):
    if request.method == 'POST':
        signature = request.META['HTTP_X_LINE_SIGNATURE']
        body = request.body.decode('utf-8')

        try:
            events = parser.parse(body, signature)  # 傳入的事件
        except InvalidSignatureError:
            return HttpResponseForbidden()
        except LineBotApiError:
            return HttpResponseBadRequest()

        for event in events:
            if isinstance(event, MessageEvent):  # 如果有訊息事件
                line_bot_api.reply_message(  # 回復傳入的訊息文字
                    event.reply_token,
                    TextSendMessage(text=event.message.text)
                )
        return HttpResponse()
    else:
        return HttpResponseBadRequest()

資料庫遷移初始化

完成以上設定後,一定要進行資料庫遷移的動作,還有往後如果有更動到一些東西也要來做這件事情。

python manage.py makemigrations
python manage.py migrate

建立超級使用者

在進行初始化後,再來要建立超級使用者,讓我們能夠登入到Django後台。

python manage.py createsuperuser

建立超級使用者之後我們要先開server

python manage.py runserver

接著就可以到這個地方登入剛剛註冊的帳號
http://127.0.0.1:8000/admin/
當你看到這樣的畫面就成功了


上一篇
Day21 安裝Ngrok
下一篇
Day23 介紹樣板(Template)
系列文
Python之虛擬貨幣API實作30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言